不知道大家對於 Bubble sort 的程式有沒有甚麼問題呢?
今天,我們就來討論一下程式碼!
我的程式碼如下:
#include<stdio.h>
int main(){
int data[10];
int i = 0, j = 0, k;
for(i=0; i<10; i++){
printf("please input a number>>");
scanf("%d", &data[i]);
}
printf("unsorted:");
for(i=0;i<10;i++)
printf("%d ",data[i]);
//bubble sort
for(i=0; i<9 ; i++){
for(j=0; j<9-i-1; j++){
if(data[j]>data[j+1]){ // change
data[j]=data[j]^data[j+1];
data[j+1]=data[j]^data[j+1];
data[j]=data[j]^data[j+1];
}
}
printf("\n");
printf("i=%d \n",i);
for(k=0;k<10;k++)
printf("%d ",data[k]);
}
printf("\nsorted:");
for(i=0;i<10;i++)
printf("%d ",data[i]);
return 0;
}
輸出結果:
我的思路:
i
、j
。printf()
函式引導使用者輸入資料、 scanf()
函式去讓使用者輸入 10 筆資料、放在陣列中,並先輸出未排序的資料。(方便觀察資料有沒有被放進陣列中)j<9-i
去控制,因為內迴圈的次數是會隨著已排序的數字變多而變少,所以在條件的地方可以用 i
去控制。(忘記的讀者可以去看昨天講解的圖回憶一下會更清楚喔!)自己寫完 bubble sort後,有沒有覺得頗有成就感呢?
我個人是覺得 bubble sort 是算比較直觀的排序方式,還有其他排序方式,如:插入排序法(Insertion sort)、選擇排序法(Selection sort)、快速排序法(Quick sort)等等,有興趣的讀者都可以在網路上找到很多相關資料,在這裡我們就先不繼續談。
明天,讓我們進入一個比較困難的單元-指標!